// 弹框提示
function nalert(msg) {
	// 辅助函数，用于查询单个元素
	const querySelector = (selector) => document.querySelector(selector);
	// 辅助函数，用于查询多个元素
	const queryAll = (selector) => document.querySelectorAll(selector);
	// 函数用于隐藏所有带有 'field' 类的元素
	const hideFields = () => {
		queryAll(".field").forEach(element => {
			element.style.display = 'none';
		});
	};

	if (querySelector('.field')) {
		// 如果已存在.field元素，设置它们为显示状态并更新消息
		queryAll('.field').forEach(element => {
			element.style.display = 'block';
			const header = element.querySelector('h2');
			if (header) {
				header.innerText = msg;
			}
		});
	} else {
		// 如果没有.field元素存在，则创建一个新的警告遮罩
		const alertOverlay = document.createElement('div');
		alertOverlay.className = 'field fieldset';
		alertOverlay.style = 'position: fixed; left: 50%; margin-left: -3rem; top: calc(50% - 1rem); background: rgba(0,0,0,0.7); z-index: 9999; border: 1px solid; text-align: center; border-radius: 0.2rem;';
		alertOverlay.innerHTML = `<h2 style="font-size: 0.6rem; text-align: center; line-height: 1rem; color: #fff; margin: 0.5rem;">${msg}</h2>`;

		// 将新元素前置插入到body中
		const body = querySelector('body');
		body.prepend(alertOverlay);
	}
	setTimeout(hideFields, 1500);  // 1.5秒后隐藏
}

window.nalert = nalert


// 复制文案
export function copy(text, type = 'input') {
	var input = document.createElement(type) // 或textarea
	//input.setAttribute('value', text) //  对textarea无效
	input.value = text
	input.setAttribute('style', 'position:fixed;top:-100%')
	document.body.appendChild(input)
	input.select() //在iOS环境下，input.select()没有选中全部内容。
	//input.setSelectionRange(0, text.length) //pc上不知道为何没生效
	document.execCommand('copy')
	input.remove()
	nalert('复制成功')
}

// 导出文件，没用到，先留着
// function exportFile (fileData, fileName) {
// 	var urlObject = window.URL || window.webkitURL || window;
// 	var export_blob = new Blob([fileData]);
// 	var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
// 	save_link.href = urlObject.createObjectURL(export_blob);
// 	save_link.download = fileName;
// 	save_link.click();
// }

// 清空对象，如果传了startText，就针对性的删除
export function clearObj(obj, startText) {
	let deleteNum = 0
	for (let key in obj) {
		if (startText && !key.startsWith(startText)) continue
		deleteNum++
		delete obj[key]
	}
	return deleteNum
}

export function isIncludeZh(text) {
	return /[\u4e00-\u9fa5]/.test(text)
}

export async function getFileContent(url, resolveFn) {
	// 使用 fetch API 获取文件
	await fetch(url)
		.then(response => {
			// 确保请求成功
			if (!response.ok) {
				throw new Error('网络请求失败');
			}
			return response.text();  // 将响应体转为文本
		})
		.then(data => {
			resolveFn(data)
		})
		.catch(error => {
			console.error('请求失败:', error);
			resolveFn('')
		});
}